package DataIO;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;


public class ReelleThermique {
	
	/** Centrales thermiques Recours */
	double centrales[][][];
	
	/**
	 * Constructeur.
	 * @param file
	 */
	public ReelleThermique(String file){
		centrales=new double[4][7][100];
		try {
			readData( file);
		} catch (InvalidFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/**
	 * Lis un fichier excel contenant les scénarios (variables réelles) pour centrales thermiques de la feuille id 1 à 4
	 * @param file
	 * @throws InvalidFormatException
	 * @throws IOException
	 */
	public void readData(String file) throws InvalidFormatException, IOException{
		InputStream inp = new FileInputStream(file);
		Workbook wb = WorkbookFactory.create(inp);

		for(int k=1;k<=4;k++){
			Sheet sheet1 = wb.getSheetAt(k);
			ArrayList<Row> rows = new ArrayList<Row>();
			for(int i =1; i<=100; i++){
				rows.add(sheet1.getRow(i));
			}

			int columsIndex[] = {1,3,5,7,9,11,13};
			int j=0;
			for (int ci : columsIndex){
				j++;
				ArrayList<Cell> cells = new ArrayList<Cell>();
				for(Row row :  rows){
					cells.add(row.getCell(ci));
				}
				int i = 0 ;
				for(Cell cell : cells){
					i++;
					switch (cell.getCellType()) {
					case Cell.CELL_TYPE_STRING:
						//Ajout dans le tableau � k j i
						centrales[k-1][j-1][i-1] = Double.parseDouble(cell.getRichStringCellValue().getString());
						break;
					default:
						System.out.println("LOL");
					}
				}
			}
		}
		inp.close();
	}
	public void afficheCentrales(){
		System.out.println("Matrices scénarios centrales thermiques en variables réelles");
		for(int k =0; k<4;k++){
			System.out.println("Centrale "+k);
			for(int j=0;j<7;j++){
				System.out.print("Jour "+j+"\t");
				for(int i=0;i<100;i++){
					System.out.print(centrales[k][j][i]+"\t");
				}
				System.out.println();
			}
			System.out.println();
		}
	}
	/**
	 * @return the centrales
	 */
	public double[][][] getCentrales() {
		return centrales;
	}
	
	
}
